package com.soft.mainsite.mybatis.mapper;

import com.soft.mainsite.module.web.cms.vo.SiteQueryParams;
import com.soft.mainsite.module.web.cms.vo.TCmsSiteVo;
import com.soft.mainsite.mybatis.model.TCmsSite;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * TCmsSiteMapper
 *
 * @author Jin
 * @create 2017-06-16
 **/
public interface TCmsSiteMapper extends Mapper<TCmsSite> {

    /**
     * 根据用户id查询站点
     *
     * @param userId
     * @return
     */
    @Select("SELECT  `s`.* FROM  `t_sys_user` u,  `t_cms_site` s,  `t_cms_user_site` us WHERE  `u`.`user_id` = `us`.`user_id`   AND `s`.`site_id` = `us`.`site_id` AND `u`.`user_id` = #{userId}  order by site_id asc")
    @ResultMap("BaseResultMap")
    List<TCmsSite> selectSitesByUserId(@Param("userId") Integer userId);

    /**
     * 通过id查询站点信息
     *
     * @param id
     * @return
     */
    TCmsSiteVo selectSiteVoById(@Param("id") Integer id);

    /**
     * 分页条件查询站点信息
     *
     * @param queryParams
     * @return
     */
    List<TCmsSiteVo> pageSiteVoListByConditions(@Param("params") SiteQueryParams queryParams);

    /**
     * 批量添加
     *
     * @param siteList
     * @return
     */
    int insertMore(List<TCmsSite> siteList);

    /**
     * 批量初始化站点（根据城市添加所有）
     *
     * @param siteList
     * @return
     */
    int insertInitMore(List<TCmsSite> siteList);

    /**
     * 批量删除子站点（没有选择城市子站点）主站除外
     *
     * @param siteId
     * @return
     */
    int deleteMore(@Param("siteId") Integer siteId);

    /**
     * 查询没有选择城市的站点id（没有使用的）
     *
     * @param siteId
     * @return
     */
    List<Integer> selectNoCityCodeSiteIds(@Param("siteId") Integer siteId);

    /**
     * 查询静态化失败站点
     *
     * @param siteIds
     * @param staticStatus
     * @return
     */
    List<TCmsSite> findSiteStaticByStatus(@Param("siteIds") String[] siteIds, @Param("status") Integer staticStatus);

    /**
     * 通过站点id数组查询静态化状态
     *
     * @param siteIds
     * @return
     */
    List<TCmsSite> findSiteStatic(@Param("siteIds") String[] siteIds);

    /**
     * 根据状态查询所有站点
     *
     * @param staticStatus
     * @return
     */
    List<TCmsSite> findAllSiteStaticByStatus(@Param("staticStatus") Integer staticStatus);

    /**
     * 更新站点静态化状态
     *
     * @param siteId
     * @param staticStatus
     */
    void updateStaticStatus(@Param("siteId") Integer siteId, @Param("staticStatus") Integer staticStatus);
}